# 海伦约会
# didntLike：不喜欢，largeDoses：极具魅力，smallDoses：一般魅力
import numpy as np

def file2matrix(filename):
    # 打开文件
    fr = open(filename)
    # 读取文件的所有内容,readline 是读取一行
    arrayOLines = fr.readlines()
    #得到文件行数
    numberOfLines = len(arrayOLines)
    #返回的NumPy矩阵,解析完成的数据:numberOfLines行,3列
    # 该方法就是用零补充矩阵
    # [[0. 0. 0.]
    #  [0. 0. 0.]
    #  ...
    #  [0. 0. 0.]]
    returnMat = np.zeros((numberOfLines,3))
    #返回的分类标签向量
    classLabelVector = []
    #行的索引值
    index = 0
    # 遍历行
    for line in arrayOLines:
        #s.strip(rm)，当rm空时,默认删除空白符(包括'\n','\r','\t',' ')
        line = line.strip()
        # print(line)
        #使用s.split(str="",num=string,cout(str))将字符串根据'\t'分隔符进行切片。
        listFromLine = line.split('\t')
        # print(listFromLine)
        #将数据前三列提取出来,存放到returnMat的NumPy矩阵中,也就是特征矩阵
        returnMat[index,:] = listFromLine[0:3]
        #根据文本中标记的喜欢的程度进行分类,1代表不喜欢,2代表魅力一般,3代表极具魅力
        if listFromLine[-1] == 'didntLike':
            classLabelVector.append(1)
        elif listFromLine[-1] == 'smallDoses':
            classLabelVector.append(2)
        elif listFromLine[-1] == 'largeDoses':
            classLabelVector.append(3)
        index += 1
    return returnMat, classLabelVector

if __name__ == '__main__':
    fileName = 'datingTestSet.txt'
    returnMat, classLabelVector = file2matrix(fileName)
    print("returnMat返回内容：",returnMat)
    print("classLabelVector返回内容：",classLabelVector)

